#!/usr/bin/env bash

set -eu

die() {
    echo >&2 "$@"
    exit 1
}

# shellcheck disable=SC1007
TEST_DIR=$(CDPATH= cd -- "$(dirname -- "$0")" && pwd)
# shellcheck source=./.environment.sh
. "$TEST_DIR/.environment.sh"

"$TEST_DIR/bin/check-requirements"

echo "Running tests..."
echo "DB_BACKEND: $DB_BACKEND"
if [[ -z "$TEST_COVERAGE" ]]; then
    echo "Coverage report: no"
else
    echo "Coverage report: yes"
fi

[[ -f "$LOCAL_INIT_DIR/.lock" ]] && die "init data is locked: are you doing some manual test? if so, please finish what you are doing, run 'instance-data unlock' and retry"

dump_backend="$(cat "$LOCAL_INIT_DIR/.backend")"
if [[ "$DB_BACKEND" != "$dump_backend" ]]; then
    die "Can't run with backend '$DB_BACKEND' because 'make bats-fixture' was ran with '$dump_backend'"
fi

if [[ $# -ge 1 ]]; then
    echo "test files: $*"
    "$TEST_DIR/lib/bats-core/bin/bats" \
        --jobs 1 \
        --timing \
        --print-output-on-failure \
        "$@"
else
    echo "test files: $TEST_DIR/bats"
    "$TEST_DIR/lib/bats-core/bin/bats" \
        --jobs 1 \
        --timing \
        --print-output-on-failure \
        "$TEST_DIR/bats"
fi
